﻿using System;
using System.Collections.Generic;

namespace Tencent.OA.App
{
    /// <summary>
    /// 定义一个用于对数据源进行分页的接口。
    /// </summary>
    /// <typeparam name="T">用于分页的实体对象。</typeparam>
    public interface IPager<T>
    {
        /// <summary>
        /// 获取数据源分页后的总页数。
        /// </summary>
        int PageCount { get; }

        /// <summary>
        /// 获取用于分页的数据源总记录数。
        /// </summary>
        int TotalItemCount { get; }

        /// <summary>
        /// 获取当前显示页的索引。
        /// </summary>
        int PageIndex { get; }

        /// <summary>
        /// 获取当前页的页码。
        /// </summary>
        int PageNumber { get; }

        /// <summary>
        /// 获取用于分页的数据源在每页上所显示的记录的数目。 
        /// </summary>
        int PageSize { get; }

        /// <summary>
        /// 获取指示当前分页是否有上一页。
        /// </summary>
        bool HasPreviousPage { get; }

        /// <summary>
        /// 获取指示当前分页是否有下一页。
        /// </summary>
        bool HasNextPage { get; }

        /// <summary>
        /// 获取指示当前分页项是否是第一页。
        /// </summary>
        bool IsFirstPage { get; }

        /// <summary>
        /// 获取指示当前分页项是否是最后一页。
        /// </summary>
        bool IsLastPage { get; }

        /// <summary>
        /// 从数据源获取的经过分页的数据。
        /// </summary>
        IList<T> PagedList { get; set; }
    }

}
